<!--
 * @Author: luohongbiao
 * @Date: 2022-02-22 10:37:55
 * @LastEditTime: 2022-02-22 14:44:47
 * @LastEditors: luohongbiao1
 * @Description: 
 * @FilePath: \face_problem\2.es6\8.箭头函数的this.html
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // var obj = {
        //     age:20,
        //     say:()=>{
        //         console.log(this.age) // undefined.obj对象是不能产生作用域的，
        //         // say()方法实际上是定义在全局作用域，say()方法中的this.age实际上是window下的age。
        //         // 箭头函数没有自己的this，只能用上一层的this，也就是定义时的this
        //     }
        // }
        // obj.say()
    </script>

    <!-- <script>
        let age = 25
        var obj = {
            age:20,
            say:()=>{
                console.log(this.age); // undefined.此时this是指向window的，但是使用let声明的age，age不会作为window的属性，所以还是undefined
            }
        }
        obj.say()
    </script> -->

    <script>
        var age = 30
        var obj = {
            age:20,
            say:()=>{
                // 30.此时this是指向window的，使用var声明的age，age会作为window的属性，所以是30
                console.log(this.age); 
            }
        }
        obj.say()
    </script>


    <!-- <script>
        var obj = {
            age: 35,
            say: function () {
                console.log(this.age); // 35 普通函数有自己的this，调用对象方法，this是该对象
            }
        }
        obj.say()
    </script> -->


    <p>总结</p>
    <p>
        <div>箭头函数中没有this 的指向，在箭头函数中this 的指向会指向离他最近的那个作用域</div>
        <div>箭头函数不能当做构造函数</div>
        <div>箭头函数中没有 arguments 这个参数</div>
    </p>

</body>

</html>